module ysyx_050369_add(
    input   [63:0]  add_op1,
    input   [63:0]  add_op2,
    input           sub_flag,
    output reg [63:0] result,
    output reg CF,SF,OF
    );
    reg [63:0] add_op2_;
    reg Ctemp,Cout;
    always @(*) begin
        add_op2_=sub_flag?~add_op2:add_op2;
        {Ctemp,result[62:0]}={1'b0,add_op1[62:0]}+{1'b0,add_op2_[62:0]}+{{63{1'b0}},sub_flag};
        {Cout,result[63]}={1'b0,add_op1[63]}+{1'b0,add_op2_[63]}+{1'b0,Ctemp};//判断移除
        SF=result[63];//判断符号
        OF=Cout^Ctemp;//
        CF=sub_flag^Cout;//减法溢出
    end
endmodule
